可以用在 object,也可以用在 Array
let obj = {
name:"Mary",
number:20
};
for(let i in obj){
console.log(i);
}
// name
// number
let obj = {
name:"Mary",
number:20
};
for(let i in obj){
console.log(obj[i]);
}
// Mary
// 20
在 object 內可以被列舉出的 properties 都是 variable 所代表的涵義。
以下面的例子來看,num 這個 array 的 property 是 i 這個變數代表的涵義,所以結果只會有 0 1 2
let num = [10,35,50];
for(let i in num){
console.log(i)
}
// 0
// 1
// 2
如果要找到 10,35,50 這三個數字的話,則要改成下面這樣
let num = [10,35,50];
for(let i in num){
console.log(num[i])
}
// 10
// 35
// 50
for of 只能用於 iterable objects(可迭代的物件),例如:String, Array, Map, Set, Nodelist...等。
let numbers = [1,2,3];
for(let i of numbers){
console.log(i);
}
// 1
// 2
// 3
let text = "happy";
for(let i of text){
console.log(i);
}
// h
// a
// p
// p
// y
let obj = {
name:"Harry",
age: 20
};
for(let i of obj){
console.log(i);
}
執行上面的程式碼,會顯示 Uncaught TypeError: obj is not iterable
補充:
關於 Map 和 Set 可以參考 Map and Set